#include "HP45_DoubleJet.h"

//数据翻转
//将buf翻转后放到dat中

//奇数排偶数排区分打印函数
/*********************************
*函数名称：HP45_PrintData
*函数功能：45 的喷头映射函数并且控制喷头喷墨
*输入参数：odd奇数排 enven偶数排 
*输出参数：none
*备注    ：45双排喷头间距为48个点
			一个A所对应的喷头的喷墨时间：20us~21us		
**********************************/
void HP45_PrintData(uint8_t* odd,uint8_t* even)
{
    uint32_t Pn	=	0;  	
    //提速补偿 高电平
    GPIO_SetBits(XM_STEP_PORT, XM_STEP_PIN);
	
 	//A1      :
 	Pn      =       0;
 	Pn      |=      ((uint32_t)(odd[0])             &       0x1)    <<      0       ;
 	Pn      |=      ((uint32_t)(odd[2])             &       0x40)   >>      4       ;
 	Pn      |=      ((uint32_t)(even[2])            &       0x10)   >>      1       ;
 	Pn      |=      ((uint32_t)(odd[5])             &       0x10)   <<      0       ;
 	Pn      |=      ((uint32_t)(even[5])            &       0x4)    <<      3       ;
 	Pn      |=      ((uint32_t)(odd[8])             &       0x4)    <<      4       ;
 	Pn      |=      ((uint32_t)(even[8])            &       0x1)    <<      7       ;
 	Pn      |=      ((uint32_t)(odd[11])            &       0x1)    <<      8       ;
 	Pn      |=      ((uint32_t)(even[10])           &       0x40)   <<      3       ;
 	Pn      |=      ((uint32_t)(odd[13])            &       0x40)   <<      4       ;
 	Pn      |=      ((uint32_t)(even[13])           &       0x10)   <<      7       ;
 	Pn      |=      ((uint32_t)(odd[16])            &       0x10)   <<      8       ;
 	Pn      |=      ((uint32_t)(even[16])           &       0x4)    <<      11      ;
	//选择A
	L6452_ChannelOutput(CHANNEL_A,1);
	//选择P并输出
	L6452_PowerOutput(Pn);		
 	//A2      :
 	Pn      =       0;
 	Pn      |=      ((uint32_t)(odd[0])             &       0x8)    >>      3       ;
 	Pn      |=      ((uint32_t)(even[0])            &       0x2)    <<      0       ;
 	Pn      |=      ((uint32_t)(odd[3])             &       0x2)    <<      1       ;
 	Pn      |=      ((uint32_t)(even[2])            &       0x80)   >>      4       ;
 	Pn      |=      ((uint32_t)(odd[5])             &       0x80)   >>      3       ;
 	Pn      |=      ((uint32_t)(even[5])            &       0x20)   <<      0       ;
 	Pn      |=      ((uint32_t)(odd[8])             &       0x20)   <<      1       ;
 	Pn      |=      ((uint32_t)(even[8])            &       0x8)    <<      4       ;
 	Pn      |=      ((uint32_t)(odd[11])            &       0x8)    <<      5       ;
 	Pn      |=      ((uint32_t)(even[11])           &       0x2)    <<      8       ;
 	Pn      |=      ((uint32_t)(odd[14])            &       0x2)    <<      9       ;
 	Pn      |=      ((uint32_t)(even[13])           &       0x80)   <<      4       ;
 	Pn      |=      ((uint32_t)(odd[16])            &       0x80)   <<      5       ;
 	Pn      |=      ((uint32_t)(even[16])           &       0x20)   <<      8       ;
	//选择A
	L6452_ChannelOutput(CHANNEL_A,2);
	//选择P并输出
	L6452_PowerOutput(Pn);	
 	//A3      :	
 	Pn      =       0;
 	Pn      |=      ((uint32_t)(odd[0])             &       0x40)   >>      6       ;
 	Pn      |=      ((uint32_t)(even[0])            &       0x10)   >>      3       ;
 	Pn      |=      ((uint32_t)(odd[3])             &       0x10)   >>      2       ;
 	Pn      |=      ((uint32_t)(even[3])            &       0x4)    <<      1       ;
 	Pn      |=      ((uint32_t)(odd[6])             &       0x4)    <<      2       ;
 	Pn      |=      ((uint32_t)(even[6])            &       0x1)    <<      5       ;
 	Pn      |=      ((uint32_t)(odd[9])             &       0x1)    <<      6       ;
 	Pn      |=      ((uint32_t)(even[8])            &       0x40)   <<      1       ;
 	Pn      |=      ((uint32_t)(odd[11])            &       0x40)   <<      2       ;
 	Pn      |=      ((uint32_t)(even[11])           &       0x10)   <<      5       ;
 	Pn      |=      ((uint32_t)(odd[14])            &       0x10)   <<      6       ;
 	Pn      |=      ((uint32_t)(even[14])           &       0x4)    <<      9       ;
 	Pn      |=      ((uint32_t)(odd[17])            &       0x4)    <<      10      ;
 	Pn      |=      ((uint32_t)(even[17])           &       0x1)    <<      13      ;
	//选择A
	L6452_ChannelOutput(CHANNEL_A,3);
	//选择P并输出
	L6452_PowerOutput(Pn);
    //提速补偿 低电平
    GPIO_ResetBits(XM_STEP_PORT, XM_STEP_PIN);	
	
 	//A4      :
 	Pn      =       0;
 	Pn      |=      ((uint32_t)(odd[1])             &       0x2)    >>      1       ;
 	Pn      |=      ((uint32_t)(even[0])            &       0x80)   >>      6       ;
 	Pn      |=      ((uint32_t)(odd[3])             &       0x80)   >>      5       ;
 	Pn      |=      ((uint32_t)(even[3])            &       0x20)   >>      2       ;
 	Pn      |=      ((uint32_t)(odd[6])             &       0x20)   >>      1       ;
 	Pn      |=      ((uint32_t)(even[6])            &       0x8)    <<      2       ;
 	Pn      |=      ((uint32_t)(odd[9])             &       0x8)    <<      3       ;
 	Pn      |=      ((uint32_t)(even[9])            &       0x2)    <<      6       ;
 	Pn      |=      ((uint32_t)(odd[12])            &       0x2)    <<      7       ;
 	Pn      |=      ((uint32_t)(even[11])           &       0x80)   <<      2       ;
 	Pn      |=      ((uint32_t)(odd[14])            &       0x80)   <<      3       ;
 	Pn      |=      ((uint32_t)(even[14])           &       0x20)   <<      6       ;
 	Pn      |=      ((uint32_t)(odd[17])            &       0x20)   <<      7       ;
 	Pn      |=      ((uint32_t)(even[17])           &       0x8)    <<      10      ;
	//选择A
	L6452_ChannelOutput(CHANNEL_A,4);
	//选择P并输出
	L6452_PowerOutput(Pn);
 	//A5      :
 	Pn      =       0;
 	Pn      |=      ((uint32_t)(odd[1])             &       0x10)   >>      4       ;
 	Pn      |=      ((uint32_t)(even[1])            &       0x4)    >>      1       ;
 	Pn      |=      ((uint32_t)(odd[4])             &       0x4)    <<      0       ;
 	Pn      |=      ((uint32_t)(even[4])            &       0x1)    <<      3       ;
 	Pn      |=      ((uint32_t)(odd[7])             &       0x1)    <<      4       ;
 	Pn      |=      ((uint32_t)(even[6])            &       0x40)   >>      1       ;
 	Pn      |=      ((uint32_t)(odd[9])             &       0x40)   <<      0       ;
 	Pn      |=      ((uint32_t)(even[9])            &       0x10)   <<      3       ;
 	Pn      |=      ((uint32_t)(odd[12])            &       0x10)   <<      4       ;
 	Pn      |=      ((uint32_t)(even[12])           &       0x4)    <<      7       ;
 	Pn      |=      ((uint32_t)(odd[15])            &       0x4)    <<      8       ;
 	Pn      |=      ((uint32_t)(even[15])           &       0x1)    <<      11      ;
 	Pn      |=      ((uint32_t)(odd[18])            &       0x1)    <<      12      ;
 	Pn      |=      ((uint32_t)(even[17])           &       0x40)   <<      7       ;
	//选择A
	L6452_ChannelOutput(CHANNEL_A,5);
	//选择P并输出
	L6452_PowerOutput(Pn);
 	//A6      :
 	Pn      =       0;
 	Pn      |=      ((uint32_t)(odd[1])             &       0x80)   >>      7       ;
 	Pn      |=      ((uint32_t)(even[1])            &       0x20)   >>      4       ;
 	Pn      |=      ((uint32_t)(odd[4])             &       0x20)   >>      3       ;
 	Pn      |=      ((uint32_t)(even[4])            &       0x8)    <<      0       ;
 	Pn      |=      ((uint32_t)(odd[7])             &       0x8)    <<      1       ;
 	Pn      |=      ((uint32_t)(even[7])            &       0x2)    <<      4       ;
 	Pn      |=      ((uint32_t)(odd[10])            &       0x2)    <<      5       ;
 	Pn      |=      ((uint32_t)(even[9])            &       0x80)   <<      0       ;
 	Pn      |=      ((uint32_t)(odd[12])            &       0x80)   <<      1       ;
 	Pn      |=      ((uint32_t)(even[12])           &       0x20)   <<      4       ;
 	Pn      |=      ((uint32_t)(odd[15])            &       0x20)   <<      5       ;
 	Pn      |=      ((uint32_t)(even[15])           &       0x8)    <<      8       ;
 	Pn      |=      ((uint32_t)(odd[18])            &       0x8)    <<      9       ;
 	Pn      |=      ((uint32_t)(even[18])           &       0x2)    <<      12      ;
	//选择A
	L6452_ChannelOutput(CHANNEL_A,6);
	//选择P并输出
	L6452_PowerOutput(Pn);	
    //提速补偿 高电平
    GPIO_SetBits(XM_STEP_PORT, XM_STEP_PIN);
	
 	//A7      :
 	Pn      =       0;
 	Pn      |=      ((uint32_t)(odd[2])             &       0x4)    >>      2       ;
 	Pn      |=      ((uint32_t)(even[2])            &       0x1)    <<      1       ;
 	Pn      |=      ((uint32_t)(odd[5])             &       0x1)    <<      2       ;
 	Pn      |=      ((uint32_t)(even[4])            &       0x40)   >>      3       ;
 	Pn      |=      ((uint32_t)(odd[7])             &       0x40)   >>      2       ;
 	Pn      |=      ((uint32_t)(even[7])            &       0x10)   <<      1       ;
 	Pn      |=      ((uint32_t)(odd[10])            &       0x10)   <<      2       ;
 	Pn      |=      ((uint32_t)(even[10])           &       0x4)    <<      5       ;
 	Pn      |=      ((uint32_t)(odd[13])            &       0x4)    <<      6       ;
 	Pn      |=      ((uint32_t)(even[13])           &       0x1)    <<      9       ;
 	Pn      |=      ((uint32_t)(odd[16])            &       0x1)    <<      10      ;
 	Pn      |=      ((uint32_t)(even[15])           &       0x40)   <<      5       ;
 	Pn      |=      ((uint32_t)(even[18])           &       0x10)   <<      9       ;
	//选择A
	L6452_ChannelOutput(CHANNEL_A,7);
	//选择P并输出
	L6452_PowerOutput(Pn);
 	//A8      :
 	Pn      =       0;
 	Pn      |=      ((uint32_t)(even[2])            &       0x8)    >>      2       ;
 	Pn      |=      ((uint32_t)(odd[2])             &       0x20)   >>      3       ;
 	Pn      |=      ((uint32_t)(even[5])            &       0x2)    <<      2       ;
 	Pn      |=      ((uint32_t)(odd[5])             &       0x8)    <<      1       ;
 	Pn      |=      ((uint32_t)(even[7])            &       0x80)   >>      2       ;
 	Pn      |=      ((uint32_t)(odd[8])             &       0x2)    <<      5       ;
 	Pn      |=      ((uint32_t)(even[10])           &       0x20)   <<      2       ;
 	Pn      |=      ((uint32_t)(odd[10])            &       0x80)   <<      1       ;
 	Pn      |=      ((uint32_t)(even[13])           &       0x8)    <<      6       ;
 	Pn      |=      ((uint32_t)(odd[13])            &       0x20)   <<      5       ;
 	Pn      |=      ((uint32_t)(even[16])           &       0x2)    <<      10      ;
 	Pn      |=      ((uint32_t)(odd[16])            &       0x8)    <<      9       ;
	//选择A
	L6452_ChannelOutput(CHANNEL_A,8);
	//选择P并输出
	L6452_PowerOutput(Pn);
 	//A9      :
 	Pn      =       0;
 	Pn      |=      ((uint32_t)(odd[0])             &       0x4)    >>      2       ;
 	Pn      |=      ((uint32_t)(even[0])            &       0x1)    <<      1       ;
 	Pn      |=      ((uint32_t)(odd[3])             &       0x1)    <<      2       ;
 	Pn      |=      ((uint32_t)(even[2])            &       0x40)   >>      3       ;
 	Pn      |=      ((uint32_t)(odd[5])             &       0x40)   >>      2       ;
 	Pn      |=      ((uint32_t)(even[5])            &       0x10)   <<      1       ;
 	Pn      |=      ((uint32_t)(odd[8])             &       0x10)   <<      2       ;
 	Pn      |=      ((uint32_t)(even[8])            &       0x4)    <<      5       ;
 	Pn      |=      ((uint32_t)(odd[11])            &       0x4)    <<      6       ;
 	Pn      |=      ((uint32_t)(even[11])           &       0x1)    <<      9       ;
 	Pn      |=      ((uint32_t)(odd[14])            &       0x1)    <<      10      ;
 	Pn      |=      ((uint32_t)(even[13])           &       0x40)   <<      5       ;
 	Pn      |=      ((uint32_t)(odd[16])            &       0x40)   <<      6       ;
 	Pn      |=      ((uint32_t)(even[16])           &       0x10)   <<      9       ;
	//选择A
	L6452_ChannelOutput(CHANNEL_A,9);
	//选择P并输出
	L6452_PowerOutput(Pn);	
    //提速补偿 高电平
    GPIO_ResetBits(XM_STEP_PORT, XM_STEP_PIN);
	
 	//A10     :
 	Pn      =       0;
 	Pn      |=      ((uint32_t)(odd[0])             &       0x20)   >>      5       ;
 	Pn      |=      ((uint32_t)(even[0])            &       0x8)    >>      2       ;
 	Pn      |=      ((uint32_t)(odd[3])             &       0x8)    >>      1       ;
 	Pn      |=      ((uint32_t)(even[3])            &       0x2)    <<      2       ;
 	Pn      |=      ((uint32_t)(odd[6])             &       0x2)    <<      3       ;
 	Pn      |=      ((uint32_t)(even[5])            &       0x80)   >>      2       ;
 	Pn      |=      ((uint32_t)(odd[8])             &       0x80)   >>      1       ;
 	Pn      |=      ((uint32_t)(even[8])            &       0x20)   <<      2       ;
 	Pn      |=      ((uint32_t)(odd[11])            &       0x20)   <<      3       ;
 	Pn      |=      ((uint32_t)(even[11])           &       0x8)    <<      6       ;
 	Pn      |=      ((uint32_t)(odd[14])            &       0x8)    <<      7       ;
 	Pn      |=      ((uint32_t)(even[14])           &       0x2)    <<      10      ;
 	Pn      |=      ((uint32_t)(odd[17])            &       0x2)    <<      11      ;
 	Pn      |=      ((uint32_t)(even[16])           &       0x80)   <<      6       ;
	//选择A
	L6452_ChannelOutput(CHANNEL_A,10);
	//选择P并输出
	L6452_PowerOutput(Pn);
 	//A11     :
 	Pn      =       0;
 	Pn      |=      ((uint32_t)(odd[1])             &       0x1)    <<      0       ;
 	Pn      |=      ((uint32_t)(even[0])            &       0x40)   >>      5       ;
 	Pn      |=      ((uint32_t)(odd[3])             &       0x40)   >>      4       ;
 	Pn      |=      ((uint32_t)(even[3])            &       0x10)   >>      1       ;
 	Pn      |=      ((uint32_t)(odd[6])             &       0x10)   <<      0       ;
 	Pn      |=      ((uint32_t)(even[6])            &       0x4)    <<      3       ;
 	Pn      |=      ((uint32_t)(odd[9])             &       0x4)    <<      4       ;
 	Pn      |=      ((uint32_t)(even[9])            &       0x1)    <<      7       ;
 	Pn      |=      ((uint32_t)(odd[12])            &       0x1)    <<      8       ;
 	Pn      |=      ((uint32_t)(even[11])           &       0x40)   <<      3       ;
 	Pn      |=      ((uint32_t)(odd[14])            &       0x40)   <<      4       ;
 	Pn      |=      ((uint32_t)(even[14])           &       0x10)   <<      7       ;
 	Pn      |=      ((uint32_t)(odd[17])            &       0x10)   <<      8       ;
 	Pn      |=      ((uint32_t)(even[17])           &       0x4)    <<      11      ;
	//选择A
	L6452_ChannelOutput(CHANNEL_A,11);
	//选择P并输出
	L6452_PowerOutput(Pn);
 	//A12     :
 	Pn      =       0;
 	Pn      |=      ((uint32_t)(odd[1])             &       0x8)    >>      3       ;
 	Pn      |=      ((uint32_t)(even[1])            &       0x2)    <<      0       ;
 	Pn      |=      ((uint32_t)(odd[4])             &       0x2)    <<      1       ;
 	Pn      |=      ((uint32_t)(even[3])            &       0x80)   >>      4       ;
 	Pn      |=      ((uint32_t)(odd[6])             &       0x80)   >>      3       ;
 	Pn      |=      ((uint32_t)(even[6])            &       0x20)   <<      0       ;
 	Pn      |=      ((uint32_t)(odd[9])             &       0x20)   <<      1       ;
 	Pn      |=      ((uint32_t)(even[9])            &       0x8)    <<      4       ;
 	Pn      |=      ((uint32_t)(odd[12])            &       0x8)    <<      5       ;
 	Pn      |=      ((uint32_t)(even[12])           &       0x2)    <<      8       ;
 	Pn      |=      ((uint32_t)(odd[15])            &       0x2)    <<      9       ;
 	Pn      |=      ((uint32_t)(even[14])           &       0x80)   <<      4       ;
 	Pn      |=      ((uint32_t)(odd[17])            &       0x80)   <<      5       ;
 	Pn      |=      ((uint32_t)(even[17])           &       0x20)   <<      8       ;
	//选择A
	L6452_ChannelOutput(CHANNEL_A,12);
	//选择P并输出
	L6452_PowerOutput(Pn);
    //提速补偿 高电平
    GPIO_SetBits(XM_STEP_PORT, XM_STEP_PIN);	
	
 	//A13     :
 	Pn      =       0;
 	Pn      |=      ((uint32_t)(odd[1])             &       0x40)   >>      6       ;
 	Pn      |=      ((uint32_t)(even[1])            &       0x10)   >>      3       ;
 	Pn      |=      ((uint32_t)(odd[4])             &       0x10)   >>      2       ;
 	Pn      |=      ((uint32_t)(even[4])            &       0x4)    <<      1       ;
 	Pn      |=      ((uint32_t)(odd[7])             &       0x4)    <<      2       ;
 	Pn      |=      ((uint32_t)(even[7])            &       0x1)    <<      5       ;
 	Pn      |=      ((uint32_t)(odd[10])            &       0x1)    <<      6       ;
 	Pn      |=      ((uint32_t)(even[9])            &       0x40)   <<      1       ;
 	Pn      |=      ((uint32_t)(odd[12])            &       0x40)   <<      2       ;
 	Pn      |=      ((uint32_t)(even[12])           &       0x10)   <<      5       ;
 	Pn      |=      ((uint32_t)(odd[15])            &       0x10)   <<      6       ;
 	Pn      |=      ((uint32_t)(even[15])           &       0x4)    <<      9       ;
 	Pn      |=      ((uint32_t)(odd[18])            &       0x4)    <<      10      ;
 	Pn      |=      ((uint32_t)(even[18])           &       0x1)    <<      13      ;
	//选择A
	L6452_ChannelOutput(CHANNEL_A,13);
	//选择P并输出
	L6452_PowerOutput(Pn);
 	//A14     :
 	Pn      =       0;
 	Pn      |=      ((uint32_t)(odd[2])             &       0x2)    >>      1       ;
 	Pn      |=      ((uint32_t)(even[1])            &       0x80)   >>      6       ;
 	Pn      |=      ((uint32_t)(odd[4])             &       0x80)   >>      5       ;
 	Pn      |=      ((uint32_t)(even[4])            &       0x20)   >>      2       ;
 	Pn      |=      ((uint32_t)(odd[7])             &       0x20)   >>      1       ;
 	Pn      |=      ((uint32_t)(even[7])            &       0x8)    <<      2       ;
 	Pn      |=      ((uint32_t)(odd[10])            &       0x8)    <<      3       ;
 	Pn      |=      ((uint32_t)(even[10])           &       0x2)    <<      6       ;
 	Pn      |=      ((uint32_t)(odd[13])            &       0x2)    <<      7       ;
 	Pn      |=      ((uint32_t)(even[12])           &       0x80)   <<      2       ;
 	Pn      |=      ((uint32_t)(odd[15])            &       0x80)   <<      3       ;
 	Pn      |=      ((uint32_t)(even[15])           &       0x20)   <<      6       ;
 	Pn      |=      ((uint32_t)(odd[18])            &       0x20)   <<      7       ;
 	Pn      |=      ((uint32_t)(even[18])           &       0x8)    <<      10      ;
	//选择A
	L6452_ChannelOutput(CHANNEL_B,1);
	//选择P并输出
	L6452_PowerOutput(Pn);
 	//A15     :
 	Pn      =       0;
 	Pn      |=      ((uint32_t)(even[2])            &       0x4)    >>      1       ;
 	Pn      |=      ((uint32_t)(odd[2])             &       0x10)   >>      2       ;
 	Pn      |=      ((uint32_t)(even[5])            &       0x1)    <<      3       ;
 	Pn      |=      ((uint32_t)(odd[5])             &       0x4)    <<      2       ;
 	Pn      |=      ((uint32_t)(even[7])            &       0x40)   >>      1       ;
 	Pn      |=      ((uint32_t)(odd[8])             &       0x1)    <<      6       ;
 	Pn      |=      ((uint32_t)(even[10])           &       0x10)   <<      3       ;
 	Pn      |=      ((uint32_t)(odd[10])            &       0x40)   <<      2       ;
 	Pn      |=      ((uint32_t)(even[13])           &       0x4)    <<      7       ;
 	Pn      |=      ((uint32_t)(odd[13])            &       0x10)   <<      6       ;
 	Pn      |=      ((uint32_t)(even[16])           &       0x1)    <<      11      ;
 	Pn      |=      ((uint32_t)(odd[16])            &       0x4)    <<      10      ;
	//选择A
	L6452_ChannelOutput(CHANNEL_B,2);
	//选择P并输出
	L6452_PowerOutput(Pn);
    //提速补偿 高电平
    GPIO_ResetBits(XM_STEP_PORT, XM_STEP_PIN);	
	
 	//A16     :
 	Pn      =       0;
 	Pn      |=      ((uint32_t)(odd[0])             &       0x2)    >>      1       ;
 	Pn      |=      ((uint32_t)(odd[2])             &       0x80)   >>      5       ;
 	Pn      |=      ((uint32_t)(even[2])            &       0x20)   >>      2       ;
 	Pn      |=      ((uint32_t)(odd[5])             &       0x20)   >>      1       ;
 	Pn      |=      ((uint32_t)(even[5])            &       0x8)    <<      2       ;
 	Pn      |=      ((uint32_t)(odd[8])             &       0x8)    <<      3       ;
 	Pn      |=      ((uint32_t)(even[8])            &       0x2)    <<      6       ;
 	Pn      |=      ((uint32_t)(odd[11])            &       0x2)    <<      7       ;
 	Pn      |=      ((uint32_t)(even[10])           &       0x80)   <<      2       ;
 	Pn      |=      ((uint32_t)(odd[13])            &       0x80)   <<      3       ;
 	Pn      |=      ((uint32_t)(even[13])           &       0x20)   <<      6       ;
 	Pn      |=      ((uint32_t)(odd[16])            &       0x20)   <<      7       ;
 	Pn      |=      ((uint32_t)(even[16])           &       0x8)    <<      10      ;
	//选择A
	L6452_ChannelOutput(CHANNEL_B,3);
	//选择P并输出
	L6452_PowerOutput(Pn);
 	//A17     :
 	Pn      =       0;
 	Pn      |=      ((uint32_t)(odd[0])             &       0x10)   >>      4       ;
 	Pn      |=      ((uint32_t)(even[0])            &       0x4)    >>      1       ;
 	Pn      |=      ((uint32_t)(odd[3])             &       0x4)    <<      0       ;
 	Pn      |=      ((uint32_t)(even[3])            &       0x1)    <<      3       ;
 	Pn      |=      ((uint32_t)(odd[6])             &       0x1)    <<      4       ;
 	Pn      |=      ((uint32_t)(even[5])            &       0x40)   >>      1       ;
 	Pn      |=      ((uint32_t)(odd[8])             &       0x40)   <<      0       ;
 	Pn      |=      ((uint32_t)(even[8])            &       0x10)   <<      3       ;
 	Pn      |=      ((uint32_t)(odd[11])            &       0x10)   <<      4       ;
 	Pn      |=      ((uint32_t)(even[11])           &       0x4)    <<      7       ;
 	Pn      |=      ((uint32_t)(odd[14])            &       0x4)    <<      8       ;
 	Pn      |=      ((uint32_t)(even[14])           &       0x1)    <<      11      ;
 	Pn      |=      ((uint32_t)(odd[17])            &       0x1)    <<      12      ;
 	Pn      |=      ((uint32_t)(even[16])           &       0x40)   <<      7       ;
	//选择A
	L6452_ChannelOutput(CHANNEL_B,4);
	//选择P并输出
	L6452_PowerOutput(Pn);
 	//A18     :
 	Pn      =       0;
 	Pn      |=      ((uint32_t)(odd[0])             &       0x80)   >>      7       ;
 	Pn      |=      ((uint32_t)(even[0])            &       0x20)   >>      4       ;
 	Pn      |=      ((uint32_t)(odd[3])             &       0x20)   >>      3       ;
 	Pn      |=      ((uint32_t)(even[3])            &       0x8)    <<      0       ;
 	Pn      |=      ((uint32_t)(odd[6])             &       0x8)    <<      1       ;
 	Pn      |=      ((uint32_t)(even[6])            &       0x2)    <<      4       ;
 	Pn      |=      ((uint32_t)(odd[9])             &       0x2)    <<      5       ;
 	Pn      |=      ((uint32_t)(even[8])            &       0x80)   <<      0       ;
 	Pn      |=      ((uint32_t)(odd[11])            &       0x80)   <<      1       ;
 	Pn      |=      ((uint32_t)(even[11])           &       0x20)   <<      4       ;
 	Pn      |=      ((uint32_t)(odd[14])            &       0x20)   <<      5       ;
 	Pn      |=      ((uint32_t)(even[14])           &       0x8)    <<      8       ;
 	Pn      |=      ((uint32_t)(odd[17])            &       0x8)    <<      9       ;
 	Pn      |=      ((uint32_t)(even[17])           &       0x2)    <<      12      ;
	//选择A
	L6452_ChannelOutput(CHANNEL_B,5);
	//选择P并输出
	L6452_PowerOutput(Pn);
    //提速补偿 高电平
    GPIO_SetBits(XM_STEP_PORT, XM_STEP_PIN);
	
 	//A19     :
 	Pn      =       0;
 	Pn      |=      ((uint32_t)(odd[1])             &       0x4)    >>      2       ;
 	Pn      |=      ((uint32_t)(even[1])            &       0x1)    <<      1       ;
 	Pn      |=      ((uint32_t)(odd[4])             &       0x1)    <<      2       ;
 	Pn      |=      ((uint32_t)(even[3])            &       0x40)   >>      3       ;
 	Pn      |=      ((uint32_t)(odd[6])             &       0x40)   >>      2       ;
 	Pn      |=      ((uint32_t)(even[6])            &       0x10)   <<      1       ;
 	Pn      |=      ((uint32_t)(odd[9])             &       0x10)   <<      2       ;
 	Pn      |=      ((uint32_t)(even[9])            &       0x4)    <<      5       ;
 	Pn      |=      ((uint32_t)(odd[12])            &       0x4)    <<      6       ;
 	Pn      |=      ((uint32_t)(even[12])           &       0x1)    <<      9       ;
 	Pn      |=      ((uint32_t)(odd[15])            &       0x1)    <<      10      ;
 	Pn      |=      ((uint32_t)(even[14])           &       0x40)   <<      5       ;
 	Pn      |=      ((uint32_t)(odd[17])            &       0x40)   <<      6       ;
 	Pn      |=      ((uint32_t)(even[17])           &       0x10)   <<      9       ;
	//选择A
	L6452_ChannelOutput(CHANNEL_B,6);
	//选择P并输出
	L6452_PowerOutput(Pn);
 	//A20     :
 	Pn      =       0;
 	Pn      |=      ((uint32_t)(odd[1])             &       0x20)   >>      5       ;
 	Pn      |=      ((uint32_t)(even[1])            &       0x8)    >>      2       ;
 	Pn      |=      ((uint32_t)(odd[4])             &       0x8)    >>      1       ;
 	Pn      |=      ((uint32_t)(even[4])            &       0x2)    <<      2       ;
 	Pn      |=      ((uint32_t)(odd[7])             &       0x2)    <<      3       ;
 	Pn      |=      ((uint32_t)(even[6])            &       0x80)   >>      2       ;
 	Pn      |=      ((uint32_t)(odd[9])             &       0x80)   >>      1       ;
 	Pn      |=      ((uint32_t)(even[9])            &       0x20)   <<      2       ;
 	Pn      |=      ((uint32_t)(odd[12])            &       0x20)   <<      3       ;
 	Pn      |=      ((uint32_t)(even[12])           &       0x8)    <<      6       ;
 	Pn      |=      ((uint32_t)(odd[15])            &       0x8)    <<      7       ;
 	Pn      |=      ((uint32_t)(even[15])           &       0x2)    <<      10      ;
 	Pn      |=      ((uint32_t)(odd[18])            &       0x2)    <<      11      ;
 	Pn      |=      ((uint32_t)(even[17])           &       0x80)   <<      6       ;
	//选择A
	L6452_ChannelOutput(CHANNEL_B,7);
	//选择P并输出
	L6452_PowerOutput(Pn);
 	//A21     :
 	Pn      =       0;
 	Pn      |=      ((uint32_t)(odd[2])             &       0x1)    <<      0       ;
 	Pn      |=      ((uint32_t)(even[1])            &       0x40)   >>      5       ;
 	Pn      |=      ((uint32_t)(odd[4])             &       0x40)   >>      4       ;
 	Pn      |=      ((uint32_t)(even[4])            &       0x10)   >>      1       ;
 	Pn      |=      ((uint32_t)(odd[7])             &       0x10)   <<      0       ;
 	Pn      |=      ((uint32_t)(even[7])            &       0x4)    <<      3       ;
 	Pn      |=      ((uint32_t)(odd[10])            &       0x4)    <<      4       ;
 	Pn      |=      ((uint32_t)(even[10])           &       0x1)    <<      7       ;
 	Pn      |=      ((uint32_t)(odd[13])            &       0x1)    <<      8       ;
 	Pn      |=      ((uint32_t)(even[12])           &       0x40)   <<      3       ;
 	Pn      |=      ((uint32_t)(odd[15])            &       0x40)   <<      4       ;
 	Pn      |=      ((uint32_t)(even[15])           &       0x10)   <<      7       ;
 	Pn      |=      ((uint32_t)(odd[18])            &       0x10)   <<      8       ;
 	Pn      |=      ((uint32_t)(even[18])           &       0x4)    <<      11      ;
	//选择A
	L6452_ChannelOutput(CHANNEL_B,8);
	//选择P并输出
	L6452_PowerOutput(Pn);
    //提速补偿 高电平
    GPIO_ResetBits(XM_STEP_PORT, XM_STEP_PIN);
	
 	//A22     :
 	Pn      =       0;
 	Pn      |=      ((uint32_t)(odd[2])             &       0x8)    >>      3       ;
 	Pn      |=      ((uint32_t)(even[2])            &       0x2)    <<      0       ;
 	Pn      |=      ((uint32_t)(odd[5])             &       0x2)    <<      1       ;
 	Pn      |=      ((uint32_t)(even[4])            &       0x80)   >>      4       ;
 	Pn      |=      ((uint32_t)(odd[7])             &       0x80)   >>      3       ;
 	Pn      |=      ((uint32_t)(even[7])            &       0x20)   <<      0       ;
 	Pn      |=      ((uint32_t)(odd[10])            &       0x20)   <<      1       ;
 	Pn      |=      ((uint32_t)(even[10])           &       0x8)    <<      4       ;
 	Pn      |=      ((uint32_t)(odd[13])            &       0x8)    <<      5       ;
 	Pn      |=      ((uint32_t)(even[13])           &       0x2)    <<      8       ;
 	Pn      |=      ((uint32_t)(odd[16])            &       0x2)    <<      9       ;
 	Pn      |=      ((uint32_t)(even[15])           &       0x80)   <<      4       ;
 	Pn      |=      ((uint32_t)(even[18])           &       0x20)   <<      8       ;
	//选择A
	L6452_ChannelOutput(CHANNEL_B,9);
	//选择P并输出
	L6452_PowerOutput(Pn);
}

//HP45打印测试
//打印测试
//彩色机给buff赋值
/***************************************************
*函数名称： HP45_PrintTestMoveDataToBuf
*函数功能： 彩色机 2层将数据放到打印buf中
*输入参数： buf就是要打印的数据缓存
*输出参数： none
*******************************************************/
void HP45_PrintTestMoveDataToBuf(uint8_t*buff,uint16_t x_cnt,uint16_t y_cnt)
{
	//buff赋初值
	for(uint8_t i = 0;i < HP45_BYTES_OF_ONE_LINE*2;i++)
		buff[i]	=	0xff;
	
	//第一排是奇数排喷
	//第二排是偶数排
	//第三排奇偶一起喷
	//第四排是就一起喷三四是为了对齐
	switch(y_cnt)
	{
		//第一排是奇数排喷
		case 0	:
			//奇数排
            buff[0]										&=	0xff;
            buff[1]										&=	0xff;
            buff[2]										&=	0xff;
            buff[3]										&=	0xff;
            buff[4]										&=	0xff;
            buff[5]										&=	0xff;
            buff[6]										&=	0xff;
            buff[7]										&=	0xff;
            buff[8]										&=	0xff;
            buff[9]										&=	0xff;
            buff[10]									&=	0xff;
            buff[11]									&=	0xff;
            buff[12]									&=	0xff;
            buff[13]									&=	0xff;
            buff[14]									&=	0xff;
            buff[15]									&=	0xff;
            buff[16]									&=	0xff;
            buff[17]									&=	0xff;
			buff[18]									&=	0xff;
            //偶数排
            buff[0 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[1 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[2 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[3 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[4 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[5 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[6 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[7 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[8 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[9 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[10 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[11 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[12 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[13 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[14 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[15 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[16 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[17 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
			buff[18 + HP45_BYTES_OF_ONE_LINE]			&=	0x00; 		
			break;
		//第二排是偶数排
		case 1	:
			//奇数排
            buff[0]										&=	0x00;
            buff[1]										&=	0x00;
            buff[2]										&=	0x00;
            buff[3]										&=	0x00;
            buff[4]										&=	0x00;
            buff[5]										&=	0x00;
            buff[6]										&=	0x00;
            buff[7]										&=	0x00;
            buff[8]										&=	0x00;
            buff[9]										&=	0x00;
            buff[10]									&=	0x00;
            buff[11]									&=	0x00;
            buff[12]									&=	0x00;
            buff[13]									&=	0x00;
            buff[14]									&=	0x00;
            buff[15]									&=	0x00;
            buff[16]									&=	0x00;
            buff[17]									&=	0x00;
			buff[18]									&=	0x00;
            //偶数排
            buff[0 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[1 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[2 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[3 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[4 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[5 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[6 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[7 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[8 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[9 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[10 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[11 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[12 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[13 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[14 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[15 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[16 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[17 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
			buff[18 + HP45_BYTES_OF_ONE_LINE]			&=	0xff; 		
			break;
		//第四排是就一起喷三四是为了对齐
		case 2	:
		case 3	:
		//调试
		case 4	:
		case 5	:
			//奇数排
            buff[0]										&=	0xff;
            buff[1]										&=	0xff;
            buff[2]										&=	0xff;
            buff[3]										&=	0xff;
            buff[4]										&=	0xff;
            buff[5]										&=	0xff;
            buff[6]										&=	0xff;
            buff[7]										&=	0xff;
            buff[8]										&=	0xff;
            buff[9]										&=	0xff;
            buff[10]									&=	0xff;
            buff[11]									&=	0xff;
            buff[12]									&=	0xff;
            buff[13]									&=	0xff;
            buff[14]									&=	0xff;
            buff[15]									&=	0xff;
            buff[16]									&=	0xff;
            buff[17]									&=	0xff;
			buff[18]									&=	0xff;
            //偶数排
            buff[0 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[1 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[2 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[3 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[4 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[5 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[6 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[7 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[8 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[9 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[10 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[11 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[12 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[13 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[14 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[15 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[16 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[17 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
			buff[18 + HP45_BYTES_OF_ONE_LINE]			&=	0xff; 			
			break;
		default:
			break;
	}
	//偶数排
	if(y_cnt % 2	==	0)
	{
		//两排喷头前后间隔48个点 奇数排喷头进入偶数排没进入
		if(x_cnt	<	HP45_POINT_BETWEEN_TWO_JET)
		{
			//奇数排
            buff[0]										&=	0xff;
            buff[1]										&=	0xff;
            buff[2]										&=	0xff;
            buff[3]										&=	0xff;
            buff[4]										&=	0xff;
            buff[5]										&=	0xff;
            buff[6]										&=	0xff;
            buff[7]										&=	0xff;
            buff[8]										&=	0xff;
            buff[9]										&=	0xff;
            buff[10]									&=	0xff;
            buff[11]									&=	0xff;
            buff[12]									&=	0xff;
            buff[13]									&=	0xff;
            buff[14]									&=	0xff;
            buff[15]									&=	0xff;
            buff[16]									&=	0xff;
            buff[17]									&=	0xff;
			buff[18]									&=	0xff;
            //偶数排
            buff[0 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[1 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[2 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[3 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[4 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[5 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[6 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[7 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[8 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[9 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[10 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[11 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[12 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[13 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[14 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[15 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[16 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[17 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
			buff[18 + HP45_BYTES_OF_ONE_LINE]			&=	0x00; 		
		}
		//偶数排进入 奇数排还没有出来
		else if((x_cnt	>=	HP45_POINT_BETWEEN_TWO_JET) && (x_cnt	<	HP45_PRINT_TEST_X_CNT - HP45_POINT_BETWEEN_TWO_JET))
		{
			//奇数排
            buff[0]										&=	0xff;
            buff[1]										&=	0xff;
            buff[2]										&=	0xff;
            buff[3]										&=	0xff;
            buff[4]										&=	0xff;
            buff[5]										&=	0xff;
            buff[6]										&=	0xff;
            buff[7]										&=	0xff;
            buff[8]										&=	0xff;
            buff[9]										&=	0xff;
            buff[10]									&=	0xff;
            buff[11]									&=	0xff;
            buff[12]									&=	0xff;
            buff[13]									&=	0xff;
            buff[14]									&=	0xff;
            buff[15]									&=	0xff;
            buff[16]									&=	0xff;
            buff[17]									&=	0xff;
			buff[18]									&=	0xff;
            //偶数排
            buff[0 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[1 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[2 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[3 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[4 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[5 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[6 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[7 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[8 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[9 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[10 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[11 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[12 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[13 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[14 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[15 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[16 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[17 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
			buff[18 + HP45_BYTES_OF_ONE_LINE]			&=	0xff; 	
		}
		//奇数排出来了 偶数排还没有出来
		else if((x_cnt	>=	HP45_PRINT_TEST_X_CNT - HP45_POINT_BETWEEN_TWO_JET) && (x_cnt	<	HP45_PRINT_TEST_X_CNT))
		{
			//奇数排
            buff[0]										&=	0x00;
            buff[1]										&=	0x00;
            buff[2]										&=	0x00;
            buff[3]										&=	0x00;
            buff[4]										&=	0x00;
            buff[5]										&=	0x00;
            buff[6]										&=	0x00;
            buff[7]										&=	0x00;
            buff[8]										&=	0x00;
            buff[9]										&=	0x00;
            buff[10]									&=	0x00;
            buff[11]									&=	0x00;
            buff[12]									&=	0x00;
            buff[13]									&=	0x00;
            buff[14]									&=	0x00;
            buff[15]									&=	0x00;
            buff[16]									&=	0x00;
            buff[17]									&=	0x00;
			buff[18]									&=	0x00;
            //偶数排
            buff[0 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[1 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[2 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[3 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[4 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[5 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[6 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[7 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[8 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[9 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[10 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[11 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[12 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[13 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[14 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[15 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[16 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[17 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
			buff[18 + HP45_BYTES_OF_ONE_LINE]			&=	0xff; 			
		}		
		//偶数排出来了
		else
		{
			//奇数排
            buff[0]										&=	0x00;
            buff[1]										&=	0x00;
            buff[2]										&=	0x00;
            buff[3]										&=	0x00;
            buff[4]										&=	0x00;
            buff[5]										&=	0x00;
            buff[6]										&=	0x00;
            buff[7]										&=	0x00;
            buff[8]										&=	0x00;
            buff[9]										&=	0x00;
            buff[10]									&=	0x00;
            buff[11]									&=	0x00;
            buff[12]									&=	0x00;
            buff[13]									&=	0x00;
            buff[14]									&=	0x00;
            buff[15]									&=	0x00;
            buff[16]									&=	0x00;
            buff[17]									&=	0x00;
			buff[18]									&=	0x00;
            //偶数排
            buff[0 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[1 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[2 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[3 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[4 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[5 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[6 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[7 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[8 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[9 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[10 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[11 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[12 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[13 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[14 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[15 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[16 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[17 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
			buff[18 + HP45_BYTES_OF_ONE_LINE]			&=	0x00; 		
		}
	}
	//奇数排
	else
	{
		//偶数排进入 奇数排还没进入
		if(x_cnt	< 	HP45_POINT_BETWEEN_TWO_JET)
		{
			//奇数排
            buff[0]										&=	0x00;
            buff[1]										&=	0x00;
            buff[2]										&=	0x00;
            buff[3]										&=	0x00;
            buff[4]										&=	0x00;
            buff[5]										&=	0x00;
            buff[6]										&=	0x00;
            buff[7]										&=	0x00;
            buff[8]										&=	0x00;
            buff[9]										&=	0x00;
            buff[10]									&=	0x00;
            buff[11]									&=	0x00;
            buff[12]									&=	0x00;
            buff[13]									&=	0x00;
            buff[14]									&=	0x00;
            buff[15]									&=	0x00;
            buff[16]									&=	0x00;
            buff[17]									&=	0x00;
			buff[18]									&=	0x00;
            //偶数排
            buff[0 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[1 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[2 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[3 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[4 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[5 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[6 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[7 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[8 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[9 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[10 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[11 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[12 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[13 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[14 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[15 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[16 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[17 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
			buff[18 + HP45_BYTES_OF_ONE_LINE]			&=	0xff; 		
		}			
		//奇数排进入 偶数排还没出来
		else if((x_cnt	>=	HP45_POINT_BETWEEN_TWO_JET) && (x_cnt 	< 	HP45_PRINT_TEST_X_CNT - HP45_POINT_BETWEEN_TWO_JET))
		{
			//奇数排
            buff[0]										&=	0xff;
            buff[1]										&=	0xff;
            buff[2]										&=	0xff;
            buff[3]										&=	0xff;
            buff[4]										&=	0xff;
            buff[5]										&=	0xff;
            buff[6]										&=	0xff;
            buff[7]										&=	0xff;
            buff[8]										&=	0xff;
            buff[9]										&=	0xff;
            buff[10]									&=	0xff;
            buff[11]									&=	0xff;
            buff[12]									&=	0xff;
            buff[13]									&=	0xff;
            buff[14]									&=	0xff;
            buff[15]									&=	0xff;
            buff[16]									&=	0xff;
            buff[17]									&=	0xff;
			buff[18]									&=	0xff;
            //偶数排
            buff[0 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[1 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[2 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[3 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[4 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[5 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[6 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[7 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[8 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[9 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[10 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[11 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[12 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[13 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[14 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[15 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[16 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
            buff[17 + HP45_BYTES_OF_ONE_LINE]			&=	0xff;
			buff[18 + HP45_BYTES_OF_ONE_LINE]			&=	0xff; 			
		}
		//偶数排出来 奇数排还没出来
		else if((x_cnt 	>= 	HP45_PRINT_TEST_X_CNT - HP45_POINT_BETWEEN_TWO_JET) && (x_cnt	<	HP45_PRINT_TEST_X_CNT))
		{
			//奇数排
            buff[0]										&=	0xff;
            buff[1]										&=	0xff;
            buff[2]										&=	0xff;
            buff[3]										&=	0xff;
            buff[4]										&=	0xff;
            buff[5]										&=	0xff;
            buff[6]										&=	0xff;
            buff[7]										&=	0xff;
            buff[8]										&=	0xff;
            buff[9]										&=	0xff;
            buff[10]									&=	0xff;
            buff[11]									&=	0xff;
            buff[12]									&=	0xff;
            buff[13]									&=	0xff;
            buff[14]									&=	0xff;
            buff[15]									&=	0xff;
            buff[16]									&=	0xff;
            buff[17]									&=	0xff;
			buff[18]									&=	0xff;
            //偶数排
            buff[0 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[1 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[2 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[3 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[4 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[5 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[6 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[7 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[8 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[9 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[10 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[11 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[12 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[13 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[14 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[15 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[16 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[17 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
			buff[18 + HP45_BYTES_OF_ONE_LINE]			&=	0x00; 			
		}		
		//奇数排出来了
		else
		{
			//奇数排
            buff[0]										&=	0x00;
            buff[1]										&=	0x00;
            buff[2]										&=	0x00;
            buff[3]										&=	0x00;
            buff[4]										&=	0x00;
            buff[5]										&=	0x00;
            buff[6]										&=	0x00;
            buff[7]										&=	0x00;
            buff[8]										&=	0x00;
            buff[9]										&=	0x00;
            buff[10]									&=	0x00;
            buff[11]									&=	0x00;
            buff[12]									&=	0x00;
            buff[13]									&=	0x00;
            buff[14]									&=	0x00;
            buff[15]									&=	0x00;
            buff[16]									&=	0x00;
            buff[17]									&=	0x00;
			buff[18]									&=	0x00;
            //偶数排
            buff[0 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[1 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[2 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[3 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[4 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[5 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[6 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[7 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[8 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[9 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[10 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[11 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[12 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[13 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[14 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[15 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[16 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
            buff[17 + HP45_BYTES_OF_ONE_LINE]			&=	0x00;
			buff[18 + HP45_BYTES_OF_ONE_LINE]			&=	0x00; 	
		}
	}	
}


//45打印程序
//彩色机计算图片大小
//输入参数为长和宽
//返回值为图片大小
/***************************************************
*函数名称： HP45_MatchTheSizeOfPicture
*函数功能： 根据图片的长和宽计算图片总大小
*输入参数： ThePictureOfX_px：长度  ThePictureOfY_px：宽度
*输出参数： none
*返回值：	图片大小
*******************************************************/
uint32_t HP45_MatchTheSizeOfPicture(uint16_t ThePictureOfX_px,uint16_t ThePictureOfY_px)
{
	uint32_t TheSizeOfPicture;
	//图片大小为 x * 排刷数 * 一排刷的字节数
    TheSizeOfPicture    =   ThePictureOfX_px * ThePictureOfY_px / 150 * HP45_BYTES_OF_ONE_LINE ;
	return  TheSizeOfPicture;
}



//定义中心变量 之所以定在这里是因为  每个墨盒有对应的中心位置 
static uint16_t HP45_XCenter	=	5300;				//X默认值是5300
static uint16_t HP45_YCenter	=	3250;				//X默认值是3250
//修改中心
/******************************
*函数名称：HP78_ModifCenter
*函数功能：修改中心值
*输入参数：X y
*输出参数：none
****************************/
void HP45_ModifCenter(uint16_t x,uint16_t y)
{
	HP45_XCenter	=	x;
	HP45_YCenter	=	y;
}

//取出X中心
/******************
*函数名称：HP78_TakeOutXCenter
*函数功能：取出X中心
*输入参数：none
*输出参数：none
*******************/
uint16_t HP45_TakeOutXCenter(void)
{
	return HP45_XCenter;
}
//取出Y中心
/******************
*函数名称： HP78_TakeOutYCenter
*函数功能： 取出Y中心
*输入参数： none
*输出参数： none
*******************/
uint16_t HP45_TakeOutYCenter(void)
{
	return HP45_YCenter;
}

//清洗墨盒
/**********************************
*函数名称： HP45_RinseInk
*函数功能： 清洗墨盒 
*输入参数： none
*输出参数： none
*备注    ： 喷头移动到接墨盒处，喷出一定量的墨水清洗喷头
************************************/
void HP45_RinseInk(void)
{
    uint8_t buff[HP45_BYTES_OF_ONE_LINE*2];
	//给buff赋初值
    for(uint8_t i = 0;i < HP45_BYTES_OF_ONE_LINE*2;i++)
		buff[i]   =   0xff;    
    //移动到接墨盒位置
    MOTOR_XY_MoveToDot(HP45_XM_RINSE_INK_POSITION,HP45_YM_RINSE_INK_POSITION);
    //加热墨盒
    for(uint32_t i = 0;i < L6452_GetLongHeatCnt();i++)
    {
        L6452_HeatInk(1);
        delay_us(15);
    }
    //喷墨清洗
    for(uint32_t i = 0;i < HP45_RINSE_INK_JET;i++)
        HP45_PrintData(buff,buff+HP45_BYTES_OF_ONE_LINE); 
}


//彩色机的打印驱动
/**********************************
*函数名称： HP45_PrintDriver
*函数功能： 彩色机打印驱动 
*输入参数： ThePictureOfX_px ：X方向点数  
*			ThePictureOfY_px ：Y方向点数
*输出参数： none
************************************/
void HP45_PrintDriver(uint16_t ThePictureOfX_px,uint16_t ThePictureOfY_px)
{
	//获取图片大小
	uint32_t PictureSize	=	HP45_MatchTheSizeOfPicture(ThePictureOfX_px,ThePictureOfY_px);
	//XY 移动到起点位置
	uint16_t x_print_origin  =    ThePictureOfX_px / 2  * HP45_STEPS_BETWEEN_TWO_POINTS + HP45_XM_INCREASE_SPEED_STEP;
	if( x_print_origin 	<	HP45_TakeOutXCenter())
		x_print_origin =  	HP45_TakeOutXCenter() - x_print_origin ;
	else 
		x_print_origin =  0;							
	uint16_t y_print_origin  =    ThePictureOfY_px / 2 * HP45_STEPS_BETWEEN_TWO_POINTS;
	if( y_print_origin	<	HP45_TakeOutYCenter())
		y_print_origin 	= 	HP45_TakeOutYCenter() - y_print_origin;
	else
		y_print_origin = 0;
    
    //计算起点
    if(x_print_origin   <   HP45_XM_RINSE_INK_POSITION)
        x_print_origin  =   0;
    else
        x_print_origin  -=  HP45_XM_RINSE_INK_POSITION;
    
    if(y_print_origin   <   HP45_YM_RINSE_INK_POSITION)
        y_print_origin  =   0;
    else
        y_print_origin  -=  HP45_YM_RINSE_INK_POSITION;
	//需要加上偶数排的数据所以需要*2
	//uint8_t buffer[HP45_BYTES_OF_ONE_LINE*2];
    uint16_t x_cnt;
    uint8_t x_dir_flag = FLAG_HIGH;
    uint32_t SzieOfDataPrinted	=	0;
	//每一排刷的数据量
	uint32_t datasizeofeachline = ThePictureOfX_px * HP45_BYTES_OF_ONE_LINE;
    uint32_t pram_addr  =   0;
    
    //清洗墨盒    
    HP45_RinseInk();     
	//移动到起点 此时XY轴不复位继续移动到指定位置
	MOTOR_XY_MoveToDot_NoReset(x_print_origin,y_print_origin);	
    XM_Enable();
    YM_Enable();     
	//死循环 当图片完全打印完后就直接返回函数
	while(1)
    {   
	    //取一排刷数据
		SRAM_ReadDate((uint8_t*)(RAM_GetDataBufAddr()),pram_addr,0,datasizeofeachline );
		pram_addr  =  pram_addr + datasizeofeachline;
        //加热300次 
        for(uint32_t m = 0;m < L6452_GetShortHeatCnt();m++)
        {
            L6452_HeatInk(1);
            delay_us(15);
         }        
        if (x_dir_flag == FLAG_HIGH)  //0,2,4, 6....
        {
			XM_Dir_Forward();
			x_dir_flag = FLAG_LOW;
            //X轴加速
            XM_IncreaseSpeed();
            for(x_cnt = 0;x_cnt <   ThePictureOfX_px - HP45_POINT_BETWEEN_TWO_JET;x_cnt++)
			{   
                HP45_PrintData((uint8_t*)(RAM_GetDataBufAddr() + x_cnt * HP45_BYTES_OF_ONE_LINE),
								(uint8_t*)(RAM_GetDataBufAddr() + (x_cnt + HP45_POINT_BETWEEN_TWO_JET) * HP45_BYTES_OF_ONE_LINE));    
                SzieOfDataPrinted   +=  HP45_BYTES_OF_ONE_LINE; 
                //XM_ContinueRunStep(HP45_XM_MOVE_TO_NEXT_ROW);
			}
            SzieOfDataPrinted	+=	HP45_BYTES_OF_ONE_LINE * HP45_POINT_BETWEEN_TWO_JET;
            //X轴减速
            XM_ReduceSpeed();
			//判断是不是打印完成  如果已经打印的数据量大于等于数据总量则说明打印完成
			if(SzieOfDataPrinted	>=	PictureSize)			
			{
                XM_Disable();
                YM_Disable();                    
				return;
			}
			YM_Dir_Forward();
			//当一排打完后下降到另一排
			YM_ContinueRunStep(HP45_YM_MOVE_TO_NEXT_ROW);
        }
        else
        {
			XM_Dir_Reverse();
			x_dir_flag = FLAG_HIGH;
            //X轴加速
            XM_IncreaseSpeed();            
            for(x_cnt	=	ThePictureOfX_px - 1;x_cnt  >=  HP45_POINT_BETWEEN_TWO_JET;x_cnt--)
			{ 
				HP45_PrintData((uint8_t*)(RAM_GetDataBufAddr() + (x_cnt - HP45_POINT_BETWEEN_TWO_JET) * HP45_BYTES_OF_ONE_LINE),
								(uint8_t*)(RAM_GetDataBufAddr() + x_cnt * HP45_BYTES_OF_ONE_LINE));              
				SzieOfDataPrinted	+=	HP45_BYTES_OF_ONE_LINE; 
                //XM_ContinueRunStep(HP45_XM_MOVE_TO_NEXT_ROW);
			}
            //将后面的列也加上
            SzieOfDataPrinted	+=	HP45_BYTES_OF_ONE_LINE * HP45_POINT_BETWEEN_TWO_JET;
            //X轴减速
			XM_ReduceSpeed();
			//判断是不是打印完成  如果已经打印的数据量大于等于数据总量则说明打印完成
			if(SzieOfDataPrinted	>=	PictureSize)		
			{//完成接收
				XM_Disable();
				YM_Disable();
				return;
			}
			YM_Dir_Forward();			
			YM_ContinueRunStep(HP45_YM_MOVE_TO_NEXT_ROW);				
        }
    }
}



/*************************
*函数名称： HP45_PrintTestDriver
*函数功能： 彩色机打印测试驱动
*输入参数： none
*输出参数： none
*备注    ： 打印测试 效果为 第一排黄色（叠一层） 红色（叠一层）
*           蓝色（叠一层） 黑色叠（一层）
            叠二层 黄 红  蓝 黑
*************************/
void HP45_PrintTestDriver(void)
{
	uint8_t buff[HP45_BYTES_OF_ONE_LINE*2];
	uint8_t buffer[HP45_BYTES_OF_ONE_LINE*2];
	uint16_t x_print_origin	=	HP45_X_ORIGIN;
	uint16_t y_print_origin	=	HP45_Y_ORIGIN;	
	uint16_t x_cnt,y_cnt;
	uint8_t x_dir_flag = FLAG_HIGH;
	//给buff赋初值
    for(uint8_t i = 0;i < HP45_BYTES_OF_ONE_LINE*2;i++)
		buff[i]   =   0xff;
	//给buffer赋值
    for(uint8_t i = 0;i < HP45_BYTES_OF_ONE_LINE*2;i++)
		buffer[i]   =   0xff;
    //计算起点
    if(x_print_origin   <   HP45_XM_RINSE_INK_POSITION)
        x_print_origin  =   0;
    else
        x_print_origin  -=  HP45_XM_RINSE_INK_POSITION;
    
    if(y_print_origin   <   HP45_YM_RINSE_INK_POSITION)
        y_print_origin  =   0;
    else
        y_print_origin  -=  HP45_YM_RINSE_INK_POSITION;
    
    //清洗墨盒    
    HP45_RinseInk();
	//XY轴移动到起点
    MOTOR_XY_MoveToDot_NoReset(x_print_origin,y_print_origin);    
    //使能X轴电机
    XM_Enable();
	//使能Y轴电机
    YM_Enable();
	//进入打印循环   
    /****************奇数排刷一排 偶数排刷一排 双排喷头2排**************************/
    for(y_cnt = 0;y_cnt <   4;y_cnt++)
	{
		//加热300次 
		for(uint32_t m = 0;m < L6452_GetShortHeatCnt();m++)
		{
			L6452_HeatInk(1);
			delay_us(15);
		}
		//判断 奇数行还是偶数行
		if (x_dir_flag == FLAG_HIGH) 
        {
			x_dir_flag = FLAG_LOW;
			//x轴正向
			XM_Dir_Forward();
			//打印线
			HP45_PrintData(buffer+HP45_BYTES_OF_ONE_LINE,buffer);			
			//X加速
			XM_IncreaseSpeed();
			for(x_cnt = 0;x_cnt < HP45_PRINT_TEST_X_CNT;x_cnt++)
			{    
				//对buff赋值	
                HP45_PrintTestMoveDataToBuf(buff,x_cnt,y_cnt);                         
				//打印一排刷
				HP45_PrintData(buff+HP45_BYTES_OF_ONE_LINE,buff);
				//X移动到下一个点
				//XM_ContinueRunStep(HP45_XM_MOVE_TO_NEXT_ROW);            
			}
			//X减速
			XM_ReduceSpeed();
			//打印线
			HP45_PrintData(buffer+HP45_BYTES_OF_ONE_LINE,buffer);
			//确定Y轴方向
			YM_Dir_Forward();
			//当一排打完后下降到另一排
			YM_ContinueRunStep(HP45_YM_MOVE_TO_NEXT_ROW); 
		}
		else
		{
			x_dir_flag = FLAG_HIGH;
			//X轴反向
			XM_Dir_Reverse();
			//打印线
			HP45_PrintData(buffer+HP45_BYTES_OF_ONE_LINE,buffer);
			//X加速
			XM_IncreaseSpeed();
			for(x_cnt = 0;x_cnt < HP45_PRINT_TEST_X_CNT;x_cnt++)
			{    
				//对buff赋值		
                HP45_PrintTestMoveDataToBuf(buff,x_cnt,y_cnt);              
				//打印一排刷
				HP45_PrintData(buff+HP45_BYTES_OF_ONE_LINE,buff);
				//X移动到下一个点
				//XM_ContinueRunStep(HP45_XM_MOVE_TO_NEXT_ROW);
			}
			//X减速
			XM_ReduceSpeed();
			//打印线
			HP45_PrintData(buffer+HP45_BYTES_OF_ONE_LINE,buffer);
			//确定Y轴方向
			YM_Dir_Forward();
			//当一排打完后下降到另一排
			YM_ContinueRunStep(HP45_YM_MOVE_TO_NEXT_ROW); 						
		}
	}
}

//45给buf赋值
/*************************
*函数名称： HP45_MachineBurnInGiveDataToBuf
*函数功能： 彩色机老化程序 给buf赋值
*输入参数：        
*输出参数： none
*************************/
void HP45_MachineBurnInGiveDataToBuf(uint8_t *buff,uint16_t x_cnt,uint16_t y_cnt,uint16_t x_max,uint16_t y_max)
{
	//buff赋初值
	for(uint8_t i	= 	0;i	<	HP45_BYTES_OF_ONE_LINE * 2;i++)
		buff[i]		=	0xff;
	//根据y_cnt 判断

}


//HP45老化程序
/*************************
*函数名称： HP45_MachineBurnIn
*函数功能： 彩色机老化程序
*输入参数： none
*输出参数： none
*备注：		最大幅1098;1050
*************************/
void HP45_MachineBurnIn(void)
{
    //打印矩形 1098*1050
    //图片长和宽
    uint16_t ThePictureOfX_px   =   900;
    uint16_t ThePictureOfY_px   =   900;    
	//XY 移动到起点位置
	uint16_t x_print_origin  =    ThePictureOfX_px / 2  * HP45_STEPS_BETWEEN_TWO_POINTS + HP45_XM_INCREASE_SPEED_STEP;
	if( x_print_origin 	<	HP45_TakeOutXCenter())
		x_print_origin =  	HP45_TakeOutXCenter() - x_print_origin ;
	else 
		x_print_origin =  0;							
	uint16_t y_print_origin  =    ThePictureOfY_px / 2 * HP45_STEPS_BETWEEN_TWO_POINTS;
	if( y_print_origin	<	HP45_TakeOutYCenter())
		y_print_origin 	= 	HP45_TakeOutYCenter() - y_print_origin;
	else
		y_print_origin = 0;	
      
    //计算起点
    if(x_print_origin   <   HP45_XM_RINSE_INK_POSITION)
        x_print_origin  =   0;
    else
        x_print_origin  -=  HP45_XM_RINSE_INK_POSITION;
    
    if(y_print_origin   <   HP45_YM_RINSE_INK_POSITION)
        y_print_origin  =   0;
    else
        y_print_origin  -=  HP45_YM_RINSE_INK_POSITION;

	uint8_t buff[HP45_BYTES_OF_ONE_LINE*2];
    uint16_t x_cnt,y_cnt,x_max,y_max;
    uint8_t x_dir_flag  =   FLAG_HIGH;
	x_max	=	ThePictureOfX_px;
	y_max	=	ThePictureOfY_px / 150;
    //清洗墨盒    
    HP45_RinseInk(); 
	//XY轴移动到起点
    MOTOR_XY_MoveToDot_NoReset(x_print_origin,y_print_origin);
    //使能X轴电机
    XM_Enable();
	//使能Y轴电机
    YM_Enable();
    //buff赋值
    for(uint8_t i = 0;i < HP45_BYTES_OF_ONE_LINE*2;i++)
        buff[i] =   0xff;
	//死循环 当图片完全打印完后就直接返回函数
	for(y_cnt = 0;y_cnt <=  y_max;y_cnt++)
    {
        //加热300次 
        for(uint32_t m = 0;m < L6452_GetShortHeatCnt();m++)
        {
            L6452_HeatInk(1);
            delay_us(15);
        }
        if (x_dir_flag == FLAG_HIGH)  //0,2,4, 6....
        {
			XM_Dir_Forward();
			x_dir_flag  =   FLAG_LOW;
            //X轴加速
            XM_IncreaseSpeed();
            for(x_cnt = 0;x_cnt < x_max;x_cnt++)
			{
				HP45_PrintData(buff+HP45_BYTES_OF_ONE_LINE,buff);
//                XM_ContinueRunStep(HP45_XM_MOVE_TO_NEXT_ROW);
			}
            //X轴减速
            XM_ReduceSpeed();
			//确定Y轴方向
			YM_Dir_Forward();
			//当一排打完后下降到另一排
			YM_ContinueRunStep(HP45_YM_MOVE_TO_NEXT_ROW);
        }
        else
        {
			XM_Dir_Reverse();
			x_dir_flag = FLAG_HIGH;
            //X轴加速
            XM_IncreaseSpeed();            
            for(x_cnt = 0;x_cnt < x_max;x_cnt++)
			{
                //给buf赋值
                HP45_PrintData(buff+HP45_BYTES_OF_ONE_LINE,buff); 
//                 XM_ContinueRunStep(HP45_XM_MOVE_TO_NEXT_ROW);
			}
            //X轴减速
			XM_ReduceSpeed();
			YM_Dir_Forward();			
			YM_ContinueRunStep(HP45_YM_MOVE_TO_NEXT_ROW);				
        }   
    }      
}

//自定义方法
/*************************
*函数名称： HP45_DEFINE_Method_n
*函数功能： HP45自定义方法
*输入参数： none
*输出参数： none
*************************/
void HP45_DEFINE_Method_n(uint32_t Pparameter)
{
}



